The FreeCAD source code/zh-cn

FreeCAD的源代码通过Git管理,是公开的,是开放的,是可获得的,声明于LGPL许可协议之下。任何人都可以复制、下载、阅读、分析、分发和改动。如果你改了代码,还想看到它被吸收进官方代码里,我们要给你提个醒,你的改动需要被FreeCAD开发者认可。所以,聪明的做法是,先到论坛上去发帖,跟大家讨论一下,说说你的初衷和想法。免得到头来,出乎你的意料,你的改动被拒绝。

如果你有兴趣,深入探索FreeCAD源代码,下面就是一些提醒,一点信息,帮助你走上正轨。

  • FreeCAD的源代码完全跨平台,我们一直很小心,保证让大家在最广泛的平台上和配置上都能使用此应用,避免让用户感觉不爽。因此,如果一个所需组件的新版本不能跨平台,不能广泛而容易地在所有平台上使用,那会是我们的错,我们将尽可能地避免这样的情况放生。同时,保证向后兼容性(用旧版本的FreeCAD也能打开新版本所创建的文件)也有重要的优先级。
  • FreeCAD的大多数功能都通过模块来实现。不含模块的FreeCAD只是一个容器,是一个只能打开和保存文件的窗口。所有的几何工具和工作台都实现在模块里。模块有的是C++写的,有的是Python,或者融合两个世界的菁华,用C++和Python制成混合动力的模块。其中实体性和关键性的功能通过C++编程,而终端工具用Python打造,从而更便于FreeCAD的用户扩展和适配。每个模块用于GUI模式时,通常会在FreeCAD接口中,定义并创建一个工作台,一般用同样的名字。但是并不强制要求模块包含一个工作台。
  • FreeCAD的模块常常依赖于其他模块。大多数使用实体几何的模块依赖于Part模块。它是FreeCAD最基础的模块,用OpenCasCade实现了大部分接口。虽然其它模块也可以直接调用OpenCasCade的功能,它们通常不那么做,而是调用Part提供的更高层次的函数。
  • FreeCAD使用其他开源库,堪称求贤若渴。Python和Qt,用在核心和几乎所有模块中。除了它们,还有两个重度使用的库,也几乎到处可见。它们是OpenCasCade TechnologyCoin3D。FreeCAD创建和管理所有的实体几何,采用了OpenCasCade;而管理3D视图,采用了coin3D。OpenCasCade主要用在App世界,而coin3D更多用于Gui世界。要用FreeCAD做任何几何相关的工作,都需要基本理解OpenCascade,这是基础。特别的模块当然采用特别的库。除了要求这些库在所有平台上都容易获得,通常没有什么其他限制。所以可以想见,一个全副武装的FreeCAD,它的依赖库列表,那将是相当庞大的阵容。
  • FreeCAD的文档对象,就是FreeCAD文档中包含的所有对象。在GUI界面,它们出现在Tree View中;在Python控制台,它们可以通过FreeCAD.ActiveDocument.Objects()调用。对几何数据,文档对象可以有,也可以没有;在3D视图中,文档对象可以显示,也可以什么也不显示。文档对象总是被划分为App和Gui两部分。在控制台模式时,就不加载Gui那部分;标准的几何对象,比如Part或Part Design里的那些,有其对应的App中定义的几何体,基于OpenCasCade。而其对应的Gui(通常也被称为"View Provider"),负责创建那个几何体的coin3D外观,用来插入coin3D的主场景图,实现3D观看。

相关的东西

  • 源代码管理
  • 发烧友中心里面又很多文档,它们关于模块,关于OpenCasCade,关于Coin3D,主要是写给Python程序员。虽然如此,因为功能性都是相通的,这些页面对C++程序员也有助益。